/**
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * $Id$ CarritoServices.java
 * Universidad de los Andes (Bogotá - Colombia)
 * Departamento de Ingeniería de Sistemas y Computación
 * Licenciado bajo el esquema Academic Free License version 2.1
 *
 * Ejercicio: Muebles los Alpes
 * Autor: German Sotelo
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
package com.losalpes.catalogo.servicios;

import com.losalpes.catalogo.entities.TipoUsuario;
import com.losalpes.catalogo.entities.Usuario;
import com.losalpes.catalogo.excepciones.InvalidDataException;
import com.losalpes.catalogo.excepciones.InvalidOperationException;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 * Clase que implementa los servicios prestados al usuario para la adminisitracion de sus datos
 * @author German Sotelo
 */
@Stateless
public class UsuarioServices implements IUsuarioServicesLocal {

    @EJB
    private IPersistenceServices persistanceServices;
    
    public void crearUsuario(Usuario usuario) throws InvalidDataException, InvalidOperationException {
        if (usuario.getDocumento() == null || usuario.getDocumento().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su documento");
        }
        if (usuario.getNombreCompleto() == null || usuario.getNombreCompleto().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su nombre");
        }
        if (usuario.getTelefonoResidencia() == null || usuario.getTelefonoResidencia().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su telefono de residencia");
        }
        if (usuario.getDireccion() == null || usuario.getDireccion().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su dirección de residencia");
        }
        if (usuario.getCiudadResidencia() == null || usuario.getCiudadResidencia().isEmpty()) {
            throw new InvalidDataException("Debe ingresar una ciudad de residencia");
        }
        if (usuario.getDepartamento() == null || usuario.getDepartamento().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su departamento de residencia");
        }
        if (usuario.getPais() == null || usuario.getPais().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su pais de residencia");
        }
        if (usuario.getEmail() == null || usuario.getEmail().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su email");
        }
        if (usuario.getPwd() == null || usuario.getPwd().isEmpty()) {
            throw new InvalidDataException("Debe ingresar una contraseña no vacía");
        }
        persistanceServices.create(usuario);
    }

    public Usuario newUsuario() {
        Usuario u = new Usuario();
        u.setTipoUsuario(TipoUsuario.CLIENTE);
        return u;
    }

    public List<Usuario> findAll() {
        return (List<Usuario>)persistanceServices.findAll(Usuario.class);
    }

    public void delete(String user) throws InvalidOperationException {
        System.out.println("delete session bean");
        Usuario use2 = (Usuario)persistanceServices.findById(Usuario.class,user);
        System.out.println(use2.getNombreCompleto());
        persistanceServices.delete(use2);
    }

    public void updateUsuario(Usuario usuario) throws InvalidDataException {
        if (usuario.getDocumento() == null || usuario.getDocumento().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su documento");
        }
        if (usuario.getNombreCompleto() == null || usuario.getNombreCompleto().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su nombre");
        }
        if (usuario.getTelefonoResidencia() == null || usuario.getTelefonoResidencia().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su telefono de residencia");
        }
        if (usuario.getDireccion() == null || usuario.getDireccion().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su dirección de residencia");
        }
        if (usuario.getCiudadResidencia() == null || usuario.getCiudadResidencia().isEmpty()) {
            throw new InvalidDataException("Debe ingresar una ciudad de residencia");
        }
        if (usuario.getDepartamento() == null || usuario.getDepartamento().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su departamento de residencia");
        }
        if (usuario.getPais() == null || usuario.getPais().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su pais de residencia");
        }
        if (usuario.getEmail() == null || usuario.getEmail().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su email");
        }
        if (usuario.getPwd() == null || usuario.getPwd().isEmpty()) {
            throw new InvalidDataException("Debe ingresar su email");
        }
        persistanceServices.update(usuario);
    }




}
